home *** CD-ROM | disk | FTP | other *** search
- #include <exec/memory.h>
- #include <intuition/intuition.h>
- #include <workbench/startup.h>
- #include <workbench/workbench.h>
-
- #ifdef LATTICE
- #include <stdio.h>
- int CXBRK(void){ return (0); }
- int chkabort(void){ return (0); }
-
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/icon_protos.h>
- #include <clib/wb_protos.h>
- #endif
-
- struct IntuitionBase *IntuitionBase=NULL;
- struct WorkbenchBase *WorkbenchBase=NULL;
-
- USHORT IconImageDaten[] = {
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
- 0x0000,0x1000,0x0000,0x0000,0x0000,0x00C0,0x0000,0x3000,
- 0x0000,0x0000,0x0000,0x01C0,0x0000,0x7000,0x0000,0x0000,
- 0x0000,0x07C0,0x0000,0xF000,0x0000,0x0000,0x0000,0x1FC0,
- 0x0001,0xF000,0x0000,0x0000,0x0000,0x7FC0,0x0003,0x7000,
- 0x0000,0x0000,0x0001,0xFFC0,0x0007,0x700F,0x8000,0x0000,
- 0x0007,0xFFC0,0x000E,0x700C,0xC000,0x0000,0x001F,0xFFC0,
- 0x001F,0xF00C,0xDB1E,0x3B6C,0x78FF,0xFFC0,0x0038,0x700F,
- 0x9DB3,0x6676,0x0DFF,0xFFC0,0x0070,0x700C,0x19B3,0x6666,
- 0x7FFF,0xFFC0,0x00E0,0x700C,0x1833,0x3C60,0xDFFF,0xFFC0,
- 0x01F1,0xF80C,0x181E,0xC660,0x7FFF,0xFFC0,0x0000,0x0000,
- 0x0000,0x7C01,0xFFFF,0xFFC0,0x0000,0x0000,0x0000,0x0007,
- 0xFFFF,0xFFC0,0x0000,0x0000,0x0000,0x001F,0xFFFF,0xFFC0,
- 0x07FF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFC0,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0FFF,0xFFFF,0xFFFF,0xFFFF,
- 0xFFFF,0xFF80,0x0D55,0x5555,0x5555,0x5555,0x5555,0x5500,
- 0x0D55,0x4555,0x5555,0x5555,0x5555,0x5500,0x0D55,0x4555,
- 0x5555,0x5555,0x5555,0x5500,0x0D55,0x0555,0x5555,0x5555,
- 0x5555,0x5700,0x0D55,0x0555,0x5555,0x5555,0x5555,0x5F00,
- 0x0D54,0x0555,0x5555,0x5555,0x5555,0x7F00,0x0D54,0x0555,
- 0x5555,0x5555,0x5555,0xFF00,0x0D50,0x0550,0x5555,0x5555,
- 0x5557,0xFF00,0x0D51,0x0551,0x1555,0x5555,0x555F,0xFF00,
- 0x0D40,0x0551,0x0441,0x4411,0x0533,0x3300,0x0D45,0x0550,
- 0x4044,0x1101,0x5111,0x1100,0x0D05,0x0551,0x4444,0x1111,
- 0x0329,0x2900,0x0D15,0x0551,0x4544,0x4115,0x1339,0x3900,
- 0x0C04,0x0551,0x4541,0x1115,0x0339,0x3900,0x0D55,0x5555,
- 0x5555,0x0155,0xFFFF,0xFF00,0x0D55,0x5555,0x5555,0x5557,
- 0xFFFF,0xFF00,0x0D55,0x5555,0x5555,0x555F,0xFFFF,0xFF00,
- 0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
- };
-
- struct Image IconImage = {
- 0,0,
- 94,24,
- 2,
- IconImageDaten,
- 0x0003,0x0000,
- NULL
- };
-
- struct DiskObject AmigaAppIcon = {
- NULL, NULL,
- {
- NULL, 0, 0, 94, 24,
- GADGHIMAGE,
- NULL, NULL,
- (APTR) &IconImage,
- (APTR) &IconImage,
- NULL, NULL, NULL, 0,
- NULL,
- },
- NULL, NULL, NULL,
- NO_ICON_POSITION,
- NO_ICON_POSITION,
- NULL, NULL, NULL
- };
-
- void main() {
- struct MsgPort *msgport;
- struct Window *window;
- struct AppIcon *appicon;
- struct IntuiMessage *imsg;
- struct AppMessage *appmsg;
- struct WBArg *argptr;
- ULONG IconID = 1, UserData = 0;
- BOOL ABORT = FALSE;
- UBYTE i;
-
- if( IntuitionBase=OpenLibrary("intuition.library", 37)) {
- if( WorkbenchBase=OpenLibrary("workbench.library", 37)) {
- /*
- * Den benötigten Message-Port erstellen
- */
- if( msgport=CreateMsgPort() ) {
- if( window=OpenWindowTags( NULL, WA_Left, 10, WA_Top, 10,
- WA_Width, 320, WA_Height, 50,
- WA_IDCMP, CLOSEWINDOW,
- WA_Flags, WINDOWCLOSE | WINDOWDRAG,
- WA_Title, "AmigaAppWindow", TAG_END)) {
- /*
- * Hier erfolgt der Eintrag des Application-Icons
- */
- if( appicon=AddAppIcon(IconID, UserData, "AmigaAppIcon", msgport, NULL, &AmigaAppIcon, NULL)) {
- do {
- /*
- * Nun warten wir entweder auf eine IDCMP-Message
- * oder eine AppMessage
- */
- Wait(1 << window->UserPort->mp_SigBit | 1 << msgport->mp_SigBit);
- while( imsg=(struct IntuiMessage *)GetMsg(window->UserPort)) {
- if( imsg->Class=CLOSEWINDOW )
- ABORT=TRUE;
- ReplyMsg((struct Message *) imsg);
- }
- while( appmsg=(struct AppMessage *)GetMsg(msgport)) {
- /*
- * Die AppMessage kann nur vom Typ MTYPE_APPWINDOW sein.
- * ID und userdata sind die von uns vorgegebenen Werte.
- * Mit NumArgs lassen sich die Workbench-Argumente aus-
- * lesen.
- */
- printf("AppMsg=%lx, Typ=%ld, ID=%ld, UserData=%ld, NumArgs=%ld\n",
- appmsg, appmsg->am_Type, appmsg->am_ID,
- appmsg->am_UserData, appmsg->am_NumArgs);
-
- /*
- * Jetzt die Argumente auswerten. Ist am->NumArgs 0, wurde
- * ein Doppelklick auf das Icon ausgeübt, ansonsten wurden
- * ein oder mehrere Icons auf das Symbol gezogen.
- */
-
- argptr = appmsg->am_ArgList;
- for(i = 0; i < appmsg->am_NumArgs; i++) {
- printf("Argument(%ld): Name='%s', Lock=%lx\n",
- i, argptr->wa_Name, argptr->wa_Lock);
- argptr++;
- }
- ReplyMsg((struct Message *)appmsg);
- }
- } while (ABORT == FALSE);
- RemoveAppIcon(appicon);
- } else printf("Das AppIcon konnt nicht eingerichtet werden\n");
- CloseWindow(window);
- } else printf("Konnte Fenster nicht öffnen\n");
- DeleteMsgPort(msgport);
- } else printf("Konnte Message-Port nicht einrichten\n");
- CloseLibrary(WorkbenchBase);
- } else printf("Konnte workbench.library nicht öffnen\n");
- CloseLibrary(IntuitionBase);
- } else printf("Konnte intuition.library nicht öffnen\n");
- }
-